using LottieDemo.Services.Interfaces;
using Microsoft.Extensions.Logging;

namespace LottieDemo.Services;

/// <summary>
/// AI聊天服务实现（模拟）
/// </summary>
public class AiChatService : IAiChatService
{
    private readonly ILogger<AiChatService> _logger;
    private readonly Random _random = new();

    // 预设的AI回复模板
    private readonly string[] _responseTemplates = new[]
    {
        "这是一个很有趣的问题！让我想想...",
        "根据我的理解，{0}",
        "关于你提到的'{0}'，我认为这是一个值得深入探讨的话题。",
        "我明白了，你想了解关于'{0}'的信息。",
        "这让我想起了一个有趣的观点：{0}",
        "从技术角度来看，{0}是一个重要的概念。",
        "你提出了一个很好的问题。简单来说，{0}涉及到多个方面的知识。"
    };

    public AiChatService(ILogger<AiChatService> logger)
    {
        _logger = logger;
    }

    /// <summary>
    /// 模拟AI回复（延迟2-4秒）
    /// </summary>
    public async Task<string> GetResponseAsync(string userMessage)
    {
        _logger.LogInformation("收到用户消息: {Message}", userMessage);

        // 模拟AI思考时间（2-4秒）
        var delay = _random.Next(2000, 4000);
        await Task.Delay(delay);

        // 随机选择一个回复模板
        var template = _responseTemplates[_random.Next(_responseTemplates.Length)];
        var response = string.Format(template, userMessage);

        _logger.LogInformation("AI回复: {Response}", response);

        return response;
    }
}
